package com.heriparid.slideshow.paging;

import android.view.GestureDetector;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;

public class OnSwipeTouchListener implements OnTouchListener {

	private final GestureDetector gestureDetector = new GestureDetector(new GestureListener());
	private final OnSingleTapListener mListener;

	public interface OnSingleTapListener {
		void onSingleTap(MotionEvent event);
	}
	
	public OnSwipeTouchListener(OnSingleTapListener listener) {
		mListener = listener;
	}
	
	@Override
	public boolean onTouch(View v, MotionEvent event) {
		return gestureDetector.onTouchEvent(event);
	}
	
	private final class GestureListener extends SimpleOnGestureListener {

	    private static final int SWIPE_THRESHOLD = 100;
	    private static final int SWIPE_VELOCITY_THRESHOLD = 100;

	    @Override
	    public boolean onDown(MotionEvent e) {
	        return true;
	    }
	    
	    @Override
	    public boolean onSingleTapConfirmed(MotionEvent e) {	        
	        if(mListener != null){
	        	mListener.onSingleTap(e);
	        }
	        return true;
	    }


	    @Override
	    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
	        boolean result = false;
	        try {
	            float diffY = e2.getY() - e1.getY();
	            float diffX = e2.getX() - e1.getX();
	            if (Math.abs(diffX) > Math.abs(diffY)) {
	                if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) {
	                    if (diffX > 0) {
	                    } else {
	                    }
	                }
	            } else {
	               // onTouch(e);
	            }
	        } catch (Exception exception) {
	            exception.printStackTrace();
	        }
	        return result;
	    }
	}
	
}
